library(tidyverse)
## -- Attaching packages ---------------------------------------------------------------------- tidyverse 1.2.1 --
## v ggplot2 2.2.1 v purrr 0.2.4
## v tibble 1.4.2 v dplyr 0.7.5
## v tidyr 0.8.1 v stringr 1.3.1
## v readr 1.1.1 v forcats 0.3.0
## -- Conflicts ------------------------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(here)
## here() starts at C:/Users/gabim/Desktop/AD1/lab2-cp2e3-gabriela-motta
library(spotifyr)
library(viridis)
## Loading required package: viridisLite
theme_set(theme_bw())
Boybands são bandas formadas geralmente por meninos adolescentes, e o estilo musical é bem característico, com músicas animadas e dançantes, e algumas baladas. Iremos analisar as principais músicas de várias boybands presentes no Spotify, entre elas as clássicas NSYNC e Backstreet Boys, além do fenômeno kpop BTS. Queremos saber se há um padrão nas características de Tempo, Dançabilidade, Valência e Energia. Tempo é a velocidade ou ritmo de uma música e é medido em batidas por minuto (BPM); Dançabilidade descreve como uma música é adequada para a dança baseada em uma combinação de elementos musicais (quanto mais próximo de 1, mais dançante); Valência mede a positividade da faixa (alta Valência significa mais positiva (por exemplo, felizes, alegres, eufóricas), enquanto baixa valência significa mais negativa (por exemplo, triste, deprimido, zangado); Energia é uma medida de 0 a 1 e representa uma medida de intensidade e atividade. A playlist base pode ser encontrada em: https://open.spotify.com/user/gabimotta15/playlist/47WfTEyFNe64N1OxeQ7xbo?si=g93Ia7niTlKYnjJlrn7dQA
boybands = read_csv(here("data/playlist-boybands.csv"))
## Parsed with column specification:
## cols(
## danceability = col_double(),
## energy = col_double(),
## key = col_character(),
## loudness = col_double(),
## mode = col_character(),
## speechiness = col_double(),
## acousticness = col_double(),
## instrumentalness = col_double(),
## liveness = col_double(),
## valence = col_double(),
## tempo = col_double(),
## track_uri = col_character(),
## duration_ms = col_double(),
## time_signature = col_integer(),
## key_mode = col_character(),
## track_name = col_character(),
## album_name = col_character(),
## artist = col_character()
## )
sumarios = boybands %>%
group_by(artist) %>%
summarise(media_tempo = mean(tempo), media_energia = mean(energy), media_danca = mean(danceability), media_valencia = mean(valence))
b = sumarios %>%
ggplot(aes(y = artist)) +
geom_point(aes(x = media_energia, color = "Energia")) +
geom_point(aes(x = media_danca, color = "Dançabilidade")) +
geom_point(aes(x = media_valencia, color = "Valência")) +
labs(x = "Médias dos Atributos", y = "Artista" , color = "Atributo")
plotly::ggplotly(b)
## We recommend that you use the dev version of ggplot2 with `ggplotly()`
## Install it with: `devtools::install_github('hadley/ggplot2')`
A maioria das boybands apresenta um padrão de média de Energia acima de 0.7, e média de Dançabilidade entre 0.5 e 0.7. Apenas a Valência se destaca, tendo bandas muito positivas como Menudo (quase 0.8 de Valência), e bandas muito negativas como The Wanted (abaixo de 0.4).
p = boybands %>%
mutate(faixa = paste(track_name, album_name)) %>%
ggplot(aes(x = artist,
color = artist,
label = faixa,
y = tempo)) +
geom_point() +
geom_line() +
scale_x_discrete(labels = abbreviate) +
labs(x = "Artista", y = "Tempo (BPM)" , color = "Artista")
plotly::ggplotly(p)
## We recommend that you use the dev version of ggplot2 with `ggplotly()`
## Install it with: `devtools::install_github('hadley/ggplot2')`
Em relação ao Tempo, é possível observar uma grande variação entre as bandas, portanto não há um padrão específico. Existem bandas com um espaçamento de Tempo bem pequeno como a coreana SHINee, e outras bem espalhadas ao longo da escala como McFly.
As músicas coreanas e latinas possuem ritmos fortes, portanto vamos observar o comportamento das bandas BTS, CNCO, Menudo e SHINee.
p = boybands %>%
filter(artist == "BTS" | artist == "CNCO" | artist == "Menudo" | artist == "SHINee") %>%
mutate(faixa = paste(track_name, album_name)) %>%
ggplot(aes(x = energy,
group = artist,
label = track_name,
y = valence)) +
stat_density2d(aes(fill=..level..), geom="polygon", n = 100, h = .25) +
scale_fill_viridis() +
facet_wrap(~artist) +
scale_x_continuous(limits = c(-.05, 1.05)) +
scale_y_continuous(limits = c(-.05, 1.05)) +
theme(legend.position = "None") +
labs(x = "Energia",
y = "Valência")
plotly::ggplotly(p)
## We recommend that you use the dev version of ggplot2 with `ggplotly()`
## Install it with: `devtools::install_github('hadley/ggplot2')`
As músicas dessas bandas estão mais concentradas em altos níveis de Energia e Valência, logo são animadas e positivas.
Lady Gaga é uma artista muito talentosa, ganhou vários prêmios com seus álbuns, que vão do pop ao jazz. Como é o comportamento do Tempo nesses álbuns? Tempo é a velocidade ou ritmo de uma música e é medido em batidas por minuto (BPM). Como os estilos musicais mudam, é esperado que haja uma variação nesse Tempo. Para essa análise serão desconsiderados singles e álbuns promocionais. A playlist base pode ser encontrada em: https://open.spotify.com/user/gabimotta15/playlist/7pH3kwz0vVTgmKt2cR7Z9o?si=JcvkobZXSkKBCE13ubsM7w
gaga = read_csv(here("data/playlist_gaga.csv"))
## Parsed with column specification:
## cols(
## danceability = col_double(),
## energy = col_double(),
## key = col_character(),
## loudness = col_double(),
## mode = col_character(),
## speechiness = col_double(),
## acousticness = col_double(),
## instrumentalness = col_double(),
## liveness = col_double(),
## valence = col_double(),
## tempo = col_double(),
## track_uri = col_character(),
## duration_ms = col_double(),
## time_signature = col_integer(),
## key_mode = col_character(),
## track_name = col_character(),
## album_name = col_character(),
## artist = col_character()
## )
mlabels <- c("ARTPOP","Born This Way", "Cheek to Cheek", "Joanne", "The Fame", "The Fame Monster")
g = gaga %>%
mutate(faixa = paste(track_name)) %>%
ggplot(aes(x = album_name,
label = faixa,
y = tempo)) +
geom_point(size = .8, alpha = .8) +
labs(x = "Álbum", y = "Tempo (BPM)", color="Álbum") +
scale_x_discrete(labels=mlabels)
plotly::ggplotly(g)
## We recommend that you use the dev version of ggplot2 with `ggplotly()`
## Install it with: `devtools::install_github('hadley/ggplot2')`
Podemos perceber que os Tempos estão geralmente concentrados entre 100 e 140 BPM, mas existe uma dispersão maior nos álbuns Cheek to Cheek e Joanne, que são os álbuns de estilos mais diferentes dos outros. Portanto o Tempo não varia muito entre os álbuns mais pop, apenas nos álbuns de jazz e country.
Quanto mais próximo de 1 é o nível de acústica, mais provável é que a música seja acústica. Músicas acústicas geralmente são mais lentas, portanto possuem menor Tempo. Na análise anterior os álbuns Joanne e Cheek to Cheek se destacaram por não estar exclusivamente na faixa dos 100 a 140 BPM, e serão observados agora em relação à acústica.
g = gaga %>%
filter(album_name == "Cheek To Cheek (Deluxe)" | album_name == "Joanne (Deluxe)") %>%
mutate(faixa = paste(track_name)) %>%
ggplot(aes(x = acousticness,
label = faixa,
color = album_name,
y = tempo)) +
geom_point(size = .8, alpha = .8) +
labs(x = "Acústica", y = "Tempo (BPM)", color = "Álbum")
plotly::ggplotly(g)
## We recommend that you use the dev version of ggplot2 with `ggplotly()`
## Install it with: `devtools::install_github('hadley/ggplot2')`
Vemos que o álbum Cheek to Cheek é quase totalmente acústico, todas as músicas estão acima de 0.5 no nível de acústica, enquanto o Joanne está bem próximo de 0. As faixas Angel Down e Million Reasons são tocadas no piano e no violão, por isso apresentam maior acústica que as outras faixas do Joanne.